<?php

/**
 * lrn框架之字符处理
 * 
 * 本文件的思路参考过以下程序，在此一并致谢！
 * - Comsenz UCenter{@link http://www.comsenz.com}
 * 
 * @author Horse Luke<horseluke@126.com>
 * @copyright Horse Luke, 2010
 * @license the Apache License, Version 2.0 (the "License"). {@link http://www.apache.org/licenses/LICENSE-2.0}
 * @version $Id: string.php 140 2010-11-20 14:48:08Z horseluke@126.com $
 * @package lrn_framework
 */
class lrn_string{
    
    /**
     * addslashes增强版——可对array、以及array的key都作处理。
     * 
     * @param mixed $string 需要转义的字符串或者数组
     * @param bool $strip 转义前是否进行反转义处理（防止多次转义）？
     * @return mixed
     */
    public static function addslashes($string, $strip = FALSE) {
        if ( is_array( $string )) {
            $temp = array();
            foreach ($string as $key => $val) {
                $key = addslashes( $strip ? stripslashes( $key ) : $key );
                $temp[$key] = self::addslashes( $val, $strip );
            }
            $string = $temp;
            unset( $temp );
        } else {
            $string = addslashes( $strip ? stripslashes( $string ) : $string );
        }
        return $string;
    }
    
    
    /**
     * stripslashes增强版——可对array、以及array的key都作处理。
     * PHP示例中所使用的array_map进行回调处理，经检验，对KEY处理无效
     *
     * @param mixed $string 需要反转义的字符串或者数组
     * @return mixed
     */
    public static function stripslashes ( $string ){
        if ( is_array( $string )) {
            $temp = array();
            foreach ($string as $key => $val) {
                $key = stripslashes( $key );
                $temp[$key] = self::stripslashes( $val );
            }
            $string = $temp;
            unset( $temp );
        } else {
            $string = stripslashes( $string );
        }
        return $string;
        
    }
    
}